package worldinruin.core;

import java.beans.PropertyChangeListener;
import java.util.List;


public interface IMap {

	/**
	 * Gets number of columns in the map.
	 * @return Number of columns.
	 */
	int getNumberOfColumns();

	/**
	 * Gets the number of rows in the map.
	 * @return Number of rows.
	 */
	int getNumberOfRows();

	/**
	 * Gets the tile on the row and column.
	 * @param row Row index.
	 * @param column Column index.
	 * @return Tile on the row and column.
	 */
	ITile getTile(int row, int column);

	/**
	 * Gets all tiles on the map.
	 * @return All tiles on the map.
	 */
	ITile[][] getTiles();

	/**
	 * Updates tiles on the map according to the list.
	 * @param newTiles List of tiles to update.
	 */
	void updateMap(List<ITile> newTiles);

	/**
	 * Adds a propertychangelistener.
	 * @param observer Propertychangelistener.
	 */
	void addPropertyChangeListener(PropertyChangeListener observer);

	/**
	 * Removes a proertychangelistener.
	 * @param observer Propertychangelistener.
	 */
	void removePropertyChangeListener(PropertyChangeListener observer);

	/**
	 * Gets the name of the map.
	 * @return Name of the map as a string.
	 */
	String getName();

}